import Vue from 'vue'
import Router from 'vue-router'
import Layout from "@/components/Layout";
import UserRouter from '@/components/users/router'
import MonitorRouter from "@/components/monitor/router";
import DocumentsRouter from "@/components/documents/router";
Vue.use(Router)

let router = new Router({
  routes: [
    {
      path: "/login",
      name: "登录",
      // 异步加载组件，可以按需下载js文件
      component: resolver => require(["@/components/Login.vue"], resolver)
    },
    {
      path: '/',
      component: Layout,
      children: [
        {
          path: "",
          name: "后台首页",
          component: (resolve) => require(["@/components/Index"], resolve)
        },
        UserRouter,
        MonitorRouter,
        // 如果import进来的对象，本身就是一个数组，那么在使用的时候变量名之前加上3个点。
        // 这三个点，表示把数组展开放入当前数组中。
        ...DocumentsRouter
      ]
    }
  ]
});

import Axios from "axios";
// 服务端返回的CORS相关的响应头，需要浏览器保存Cookie
// 对应后端的 configuration.setAllowCredentials(true);
Axios.defaults.withCredentials = true;

//如果是AJAX请求，需要使用AXIOS的拦截器来处理请求的拦截
Axios.interceptors.request.use(config => {
  //请求发生之前
  // console.log("发送请求");
  return config;
}, error => {
  //发送请求出现错误
  console.error(error);
  return Promise.reject(error);
});
import HeyUI from "heyui";
Axios.interceptors.response.use(response => {
  //响应没有出现错误，200、302等
  // console.log("请求完成，状态码: " + response.status);
  return response;
}, error => {
  // console.error("错误信息");
  if(error.response.status ===403){
    //跳转到登录页面，需要把授权地址作为参数传递给登录页面
    router.push({name:"登录",params:{redirectUrl: error.request.responseURL}})
  }else{
    //响应出现问题，403、404、500
    console.error(error);
    HeyUI.$Message({type: "error",text: "网络出现故障，请稍后重试！"});
  }
  return Promise.reject(error);
});

export default router;
